home *** CD-ROM | disk | FTP | other *** search
- # $Id: MakeFlags 1.1 1995/11/05 22:25:15 digulla Exp digulla $
- # $Log: MakeFlags $
- # Revision 1.1 1995/11/05 22:25:15 digulla
- # Initial revision
- #
-
- # Options section. Specify the comiler/environment you want to use
- # Choose one and comment the others out
- CC = sc
- #CC = gcc
- #CC = dcc
-
- ifeq "$(CC)" "sc"
- COMMON_CFLAGS = NoVersion NoStkChk
- OPT_CFLAGS = Optimize
- DEBUG_CFLAGS = Debug Full Define DEBUG
- PROFILE_CFLAGS = Define PROFILE
- EXTRA_CFLAGS =
- INCLUDE_DIR = IDir
- INCLUDES = # User
- LIB_PREFIX =
- LIB_SUFFIX = .lib
- SYS_INCLUDES =
- STD_INCLUDES = $(INCLUDES) $(SYS_INCLUDES)
- DEFINES =
- SYS_DEFINES =
- STD_DEFINES = $(DEFINES) $(SYS_DEFINES)
- AR = join as
- PARENT_DIR = /
- AS = Asm
- endif
- ifeq "$(CC)" "gcc"
- COMMON_CFLAGS = -msmall-code -Wall -Wpointer-arith
- OPT_CFLAGS = -O2
- DEBUG_CFLAGS = -gstabs # For the Barfly debugger
- PROFILE_CFLAGS = -p # If someone ever writes a profiler
- EXTRA_CFLAGS =
- INCLUDE_DIR = -I
- INCLUDES = # User
- LIB_PREFIX = lib
- LIB_SUFFIX = .a
- SYS_INCLUDES =
- STD_INCLUDES = $(INCLUDES) $(SYS_INCLUDES)
- AR = ar u
- PARENT_DIR = ../
- AS = A68k
- endif
- ifeq "$(CC)" "dcc"
- endif
-
- # How to run certain commands
- RM = delete quiet all
- MV = rename
- CP = copy quiet all
- MKDIR = MakeDir
- ECHO = echo
- INSTALL_PROGRAM = copy
- INSTALL_DATA = copy
- LHA_FULL = lha -x -a -r -e a
- LHA_DELTA = lha -x -a -r -e -s a
-
- # Things for make
- # BUILD_OPTS : how to build target files. This is a set of flags:
- # o - Use optimization when building target files (when
- # applicable)
- # g - Include debugging information
- # p - Include profiling information
- # Multiple flags can be specified in any order, ie. "gop" will
- # enable all options. Note that for some compilers, o and g
- # exclude each other.
- # EXTRA_MAKEFLAGS - The contents of this variable is passed to sub-makes
- # PASSMAKEFLAGS - (internal) This variable contains everything that should
- # always be passed to sub-makes (additional to MAKEFLAGS)
- BUILD_OPTS = g
- EXTRA_MAKEFLAGS =
- PASSMAKEFLAGS = "TOP_DIR=$(TOP_DIR)" "EXTRA_MAKEFLAGS=$(EXTRA_MAKEFLAGS)" \
- "BUILD_OPTS=$(BUILD_OPTS)"
-
- prefix = $(TOP_DIR)
- exec_prefix = $(prefix)
- bindir = $(exec_prefix)c/
- libdir = $(exec_prefix)lib/
- includedir = $(exec_prefix)include/
- docdir = $(exec_prefix)doc/
- exampledir = $(exec_prefix)examples/
-
- # This is used as a pattern for making something in subdirs. Use it with
- # $(subst TARGET,all,$(SUBDIR_RULE))
- SUBDIR_RULE = unset dir @@\
- for dir in $(SUBDIRS) \
- do \
- $(ECHO) "Making TARGET in $(CURRENT_DIR)$$dir" ";" \
- ( cd $$dir ";" $(MAKE) $(PASSMAKEFLAGS) \
- "CURRENT_DIR=$(CURRENT_DIR)$$dir/" TARGET ) \
- done
-
- # Set flags for optimizations
- ifneq (,$(findstring o,$(BUILD_OPTS)x))
- CFLAGS_1 = $(OPT_CFLAGS)
- SUFFIX_1 = o
- else
- CFLAGS_1 =
- SUFFIX_1 =
- endif
-
- # Set flags for debugging
- ifneq (,$(findstring g,$(BUILD_OPTS)x))
- CFLAGS_2 = $(DEBUG_CFLAGS)
- SUFFIX_2 = g
- else
- CFLAGS_2 =
- SUFFIX_2 =
- endif
-
- # Set flags for profiling
- ifneq (,$(findstring p,$(BUILD_OPTS)x))
- CFLAGS_3 = $(PROFILE_CFLAGS)
- SUFFIX_3 = p
- else
- CFLAGS_3 =
- SUFFIX_3 =
- endif
-
- OPT_SUFFIX = $(SUFFIX_1)$(SUFFIX_2)$(SUFFIX_3)
- ifneq "$(OPT_SUFFIX)" ""
- OBJDIR = obj_$(OPT_SUFFIX)
- else
- OBJDIR = obj
- endif
-
- CFLAGS = $(strip $(COMMON_CFLAGS) $(EXTRA_CFLAGS) \
- $(CFLAGS_1) $(CFLAGS_2) $(CFLAGS_3) \
- $(DEFINES) $(INCLUDES))
-
- # Use this at a leaf-rule as the last line so the use can see we're through
- define done-with-it
- @$(ECHO) "Done with $@ in $(CURRENT_DIR)"
- endef
-
- # Use this in a Makefile where a specific rule doesn't apply
- define nothing-to-be-done
- @$(ECHO) "Nothing to be done for $@ in $(CURRENT_DIR)"
- endef
-
- .PHONY : all clean dist check install
-
- ifeq "$(CC)" "sc"
- CC_COMPILE = $(CC) $(CFLAGS)
- CC_LINK = $(CC) $(CFLAGS) Link To
- define run-cc
- $(CC) $(CFLAGS) $<
- -$(RM) $@
- $(MV) $(dir $<)$(notdir $@) $@
- endef
- endif
- ifeq "$(CC)" "gcc"
- CC_COMPILE = $(CC) $(CFLAGS) -c
- CC_LINK = $(CC) $(CFLAGS) -o
- define run-cc
- -$(RM) $@
- $(CC_COMPILE) $< -o $@
- endef
- endif
- ifeq "$(CC)" "dcc"
- CC_COMPILE = $(CC) $(CFLAGS) -c
- CC_LINK = $(CC) $(CFLAGS) -o
- define run-cc
- -$(RM) $@
- $(CC_COMPILE) $< -o $@
- endef
- endif
-
- define do-dist
- @$(ECHO) "" > dist.dev
- $(foreach file,$(DEV_DIST_FILES),$(ECHO) "AROS/$(CURRENT_DIR)$(file)" >> dist.dev @@)
- $(foreach dir,$(SUBDIRS),$(ECHO) "@AROS/$(CURRENT_DIR)$(dir)/dist.dev" >> dist.dev @@)
- $(ECHO) "" > dist.usr
- $(foreach file,$(USR_DIST_FILES),$(ECHO) "AROS/$(CURRENT_DIR)$(file)" >> dist.usr @@)
- $(foreach dir,$(SUBDIRS),$(ECHO) "@AROS/$(CURRENT_DIR)$(dir)/dist.usr" >> dist.usr @@)
- endef
-
- MAKEDEPEND = MkDepend
- define make-depend
- @if not exists $(OBJDIR) @@\
- makedir $(OBJDIR) @@\
- endif
- $(MAKEDEPEND) -f $@ -p ".c:$(OBJDIR)/%n.o $(OBJDIR)/%n.d" $< \
- $(patsubst $(INCLUDE_DIR),-I,$(INCLUDES)) -I $(SRCDIR)
- endef
-